package com.xx.doublexchat.common.user.domain.entity;

import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.util.Objects;
import java.util.Optional;

/**
 * IP信息实体类
 */
@Data
public class IpInfo implements Serializable {
    // 注册时的ip
    private String createIp;

    //注册时的ip详情
    private IpDetail createIpDetail;

    //最新登录的ip
    private String updateIp;

    //最新登录ip的详情
    private IpDetail updateIpDetail;

    //刷新ip
    public void refreshIp(String ip) {
        if (StringUtils.isBlank(ip)) {
            return;
        }
        //第一次注册
        if (StringUtils.isBlank(createIp)) {
            createIp = ip;
        }
        updateIp = ip;
    }

    // 判断是否需要刷新
    public String needRefreshIp() {
        boolean notNeedRefreshFlag = Optional.ofNullable(updateIpDetail)
                .map(IpDetail::getIp)
                .filter(ip -> Objects.equals(ip, updateIp))
                .isPresent();
        return notNeedRefreshFlag ? null : updateIp;
    }

    //刷新ip信息
    public void refreshIpDetail(IpDetail ipDetail) {
        if (Objects.equals(createIp,ipDetail.getIp())) {
            createIpDetail = ipDetail;
        }
        if (Objects.equals(updateIp,ipDetail.getIp())) {
            updateIpDetail = ipDetail;
        }

    }
}
